package com.bkgy.controller.zincpot.dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.AssertTrue;
import javax.validation.constraints.Pattern;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

/**
 * tb_cgl_1870_zinc_pot_his 分页查询参数
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ZincPotHisPageDTO {

    /**
     * 开始时间
     * 时间格式：2025-06-01 00:00:01
     */
    @Pattern(regexp = "^$|\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}",
            message = "startToc格式错误，正确格式为yyyy-MM-dd HH:mm:ss")
    private String startToc;

    /**
     * 结束时间
     * 时间格式：2025-06-01 00:00:01
     */
    @Pattern(regexp = "^$|\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}",
            message = "endToc格式错误，正确格式为yyyy-MM-dd HH:mm:ss")
    private String endToc;

    /**
     * 出口卷号
     */
    private String extid;

    /**
     * 校验结束时间是否大于开始时间
     * 同时为空或同时不为空时才进行比较
     */
    @AssertTrue(message = "endToc必须大于startToc")
    public boolean isEndTimeGreaterThanStartTime() {
        if (startToc == null || startToc.isEmpty() || endToc == null || endToc.isEmpty()) {
            return true;
        }

        // 解析时间并比较
        try {
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime start = LocalDateTime.parse(startToc, formatter);
            LocalDateTime end = LocalDateTime.parse(endToc, formatter);
            return end.isAfter(start);
        } catch (DateTimeParseException e) {
            return false;
        }
    }
}
